/**
 *
 */
package net.frenopatico.citadels.view.windows;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Singleton;

import net.frenopatico.citadels.view.accessors.Messages;

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
import com.vaadin.ui.Window;

/**
 * Window the give the user the opportunity to log in.
 *
 * @author eduardo.ramirez.ronco@gmail.com
 */
@Singleton
public class MainWindow extends Window {
    private static final long serialVersionUID = 2376788521405394546L;

    /**
     * Wire and initialize the window.
     *
     *@param requestURI URI for the current request.
     */
    public void initialize( final String requestURI ) {
        this.removeAllComponents();

        final HorizontalLayout authInfo = new HorizontalLayout();
        this.addComponent( new Label( "Demonstrating how to do Google accounts authentication in a <a href=\"http://www.vaadin.com\">Vaadin</a> application deployed to Google App Engine.", Label.CONTENT_XHTML ) );
        this.addComponent( authInfo );

        final UserService userService = UserServiceFactory.getUserService();
        final User currentUser = userService.getCurrentUser();

        final List<Link> links = new ArrayList<Link>( 1 );
        final Label email = new Label( currentUser.getNickname() );

        links.add( new Link( Messages.get( "app.logout" ), new ExternalResource( userService.createLogoutURL( requestURI ) ) ) );

        email.setStyleName( "email" );
        authInfo.addComponent( email );

        for( Link link : links ) {
            authInfo.addComponent( link );
        }
    }
}
